package controllers

import (
	"github.com/bytesfield/golang-gin-auth-service/src/app/middlewares"
	"github.com/bytesfield/golang-gin-auth-service/src/app/responses"
	"github.com/gin-contrib/cors"
	gin "github.com/gin-gonic/gin"
)

func (s *Server) initializeRoutes() {
	r := s.Router // 使用 gin.Default() 来初始化路由引擎

	// 设置 CORS 中间件
	r.Use(cors.New(cors.Config{
		AllowOrigins:     []string{"*"},                      // 允许所有域名访问，生产环境中应该指定具体域名
		AllowMethods:     []string{"GET", "POST", "OPTIONS"}, // 允许的 HTTP 方法
		AllowHeaders:     []string{"Content-Type"},           // 允许的请求头
		ExposeHeaders:    []string{"Content-Length"},
		AllowCredentials: true, // 是否允许携带认证信息
		MaxAge:           3600, // 设置预检请求的缓存时间（秒）
	}))

	// 设置路由
	r.GET("/", s.Home) // 首页路由

	api := r.Group("/api/v1") // 以 /api/v1 为前缀的路由组
	{
		api.POST("/login", s.Login)
		api.POST("/token/refresh", middlewares.AuthMiddleware(), s.RefreshToken)
		api.POST("/register", s.Register)
		api.GET("/users", middlewares.AuthMiddleware(), s.GetUsers)
		api.GET("/users/:id", s.GetUser)
		api.PUT("/users/:id", middlewares.AuthMiddleware(), s.UpdateUser)
		api.POST("/users/:id", middlewares.AuthMiddleware(), s.DeleteUser)
		api.POST("/downloaddata", s.DownloadDataAsExcel) // 下载数据路由
		api.GET("/getfb", s.GetFb)                       // 下载数据路由
	}

	//Not Found Route
	r.NoRoute(func(c *gin.Context) {
		responses.NotFound(c, "Not Found")
	})
}
